package models;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class Barco {
	
	private static Connection conexao;
	private static Statement comando;
	
	/*************************************************************/
	
	protected static void conectar() throws SQLException {  
	    
		  
		try {
			Class.forName("org.postgresql.Driver");
		} catch (ClassNotFoundException e) {
		}

			conexao = DriverManager.getConnection(  
			        "jdbc:postgresql://localhost:5432/SGRv2",  
			        "postgres",  
			        "senha");
		
			comando =  conexao.createStatement();

	}

	/***********************************************************/
	
	  int id;
	  int classeid;
	  String nomeclasse;
	  
      String nome;
      String numero;
      String modelo;
      String corcasco;
      String corvela;
      String ano;
      int timoneiroid;
      String nometimoneiro;
      
      	public int getid() {
			return id;
		}
		public void setid(int id) {
			this.id = id;
		}
		
		public int getclasseid() {
			return classeid;
		}
		public void setclasseid(int classeid) {
			this.classeid = classeid;
		}
		
		public String getnomeclasse() {
			return nomeclasse;
		}
		public void setnomeclasse(String nomeclasse) {
			this.nomeclasse = nomeclasse;
		}
		
		public String getnome() {
			return nome;
		}
		public void setnome(String nome ) {
			this.nome = nome ;
		}
				
		public String getnumero() {
			return numero;
		}
		public void setnumero(String numero) {
			this.numero = numero ;
		}	
		
		
		public String getmodelo() {
			return modelo;
		}
		public void setmodelo(String modelo) {
			this.modelo = modelo ;
		}		
				
		public String getcorcasco() {
			return corcasco;
		}
		public void setcorcasco(String corcasco) {
			this.corcasco = corcasco ;
		}	
		
		public String getcorvela() {
			return corvela;
		}
		public void setcorvela(String corvela) {
			this.corvela = corvela ;
		}
		
		public String getano() {
			return ano;
		}
		public void setano(String ano) {
			this.ano = ano ;
		}
		
		public int gettimoneiroid() {
			return timoneiroid;
		}
		public void settimoneiroid(int timoneiroid) {
			this.timoneiroid = timoneiroid;
		}
		
		public String getnometimoneiro() {
			return nometimoneiro;
		}
		public void setnometimoneiro(String nometimoneiro) {
			this.nometimoneiro = nometimoneiro;
		}
		
/***************************************************************/
		
	    public static Barco recuperarBarco(int barcoid) throws SQLException
	    {    
	    	conectar();
	    	
	    	ResultSet reader = comando.executeQuery("select * from barco where idbarco =" + barcoid);
	    	    	
	    	Barco novo = new Barco();
	    	
	    	List<Usuario> usuarios = new ArrayList<Usuario>();
	    	usuarios = Usuario.recuperarPessoas();
	    	
	    	List<Classe> classes= new ArrayList<Classe>();
	    	classes = Classe.Classes();

	        while (reader.next())
	        {         
	        	
	            try
	            {
	                novo.setid(((int)reader.getInt("idbarco") ));
	            }
	            catch (Exception e) {
					
				}
	            try
	            {
	                novo.setnome((String)reader.getString("nomebarco"));
	            }
	            catch (Exception e) {}
	            try
	            {
	                novo.setnumero((String)reader.getString("numerobarco"));
	            }
	            catch (Exception e) {}
	            try
	            {
	                novo.setmodelo((String)reader.getString("modelobarco"));
	            }
	            catch (Exception e) {}
	            try
	            {
	                novo.setcorvela((String)reader.getString("corvelabarco"));
	            }
	            catch (Exception e) {}
	            try
	            {
	                novo.setcorcasco((String)reader.getString("corcascobarco"));
	            }
	            catch (Exception e) {}
	            try
	            {
	                novo.setclasseid((int)reader.getInt("idclasse"));
	                for(Classe x : classes) {
		                if(x.id == novo.classeid) {
		                	novo.setnomeclasse(x.nome);
		                	break;
		                }
	                }
	            }
	            catch (Exception e) {}
	            try
	            {
	                novo.settimoneiroid((int)reader.getInt("timoneirobarco"));
	                for(Usuario x : usuarios) {
		                if(x.id == novo.timoneiroid) {
		                	novo.setnometimoneiro(x.nome);
		                	break;
		                }
	                }
	            }
	            catch (Exception e) {}
	            
	            try
	            {
	                novo.setano((String)reader.getString("anobarco"));
	            }
	            catch (Exception e) {}
	               
	        	}
	        reader.close();
	        return novo;

	    }

	    /***************************************************************/	
	    
	    public static List<Barco> recuperarBarcos() throws SQLException
	    {    
	    	conectar();
	    	
	    	ResultSet reader = comando.executeQuery("select * from barco");
	    	    	
	    	List<Barco> barcos = new ArrayList<Barco>();

	    	List<Usuario> usuarios = new ArrayList<Usuario>();
	    	usuarios = Usuario.recuperarPessoas();
	    	
	    	List<Classe> classes= new ArrayList<Classe>();
	    	classes = Classe.Classes();

	        while (reader.next())
	        {         
	        	Barco novo = new Barco();
	            try
	            {
	                novo.setid(((int)reader.getInt("idbarco") ));
	            }
	            catch (Exception e) {
					
				}
	            try
	            {
	                novo.setnome((String)reader.getString("nomebarco"));
	            }
	            catch (Exception e) {}
	            try
	            {
	                novo.setnumero((String)reader.getString("numerobarco"));
	            }
	            catch (Exception e) {}
	            try
	            {
	                novo.setmodelo((String)reader.getString("modelobarco"));
	            }
	            catch (Exception e) {}
	            try
	            {
	                novo.setcorvela((String)reader.getString("corvelabarco"));
	            }
	            catch (Exception e) {}
	            try
	            {
	                novo.setcorcasco((String)reader.getString("corcascobarco"));
	            }
	            catch (Exception e) {}
	            try
	            {
	                novo.setclasseid((int)reader.getInt("idclasse"));
	                for(Classe x : classes) {
		                if(x.id == novo.classeid) {
		                	novo.setnomeclasse(x.nome);
		                	break;
		                }
	                }
	            }
	            catch (Exception e) {}
	            try
	            {
	                novo.settimoneiroid((int)reader.getInt("timoneirobarco"));
	                for(Usuario x : usuarios) {
		                if(x.id == novo.timoneiroid) {
		                	novo.setnometimoneiro(x.nome);
		                	break;
		                }
	                }
	            }
	            catch (Exception e) {}
	            
	            try
	            {
	                novo.setano((String)reader.getString("anobarco"));
	            }
	            catch (Exception e) {}
	               
	            barcos.add(novo);
	        }

	        return barcos;

	    }

	    /***************************************************************/
	    
	    public static List<Barco> recuperarBarcos(String sql) throws SQLException
	    {    
	    	conectar();
	    	
	    	ResultSet reader = comando.executeQuery(sql);
	    	    	
	    	List<Barco> barcos = new ArrayList<Barco>();

	        while (reader.next())
	        {         
	        	Barco novo = new Barco();
	            try
	            {
	                novo.setid(((int)reader.getInt("idbarco") ));
	            }
	            catch (Exception e) {
					
				}
	            try
	            {
	                novo.setnome((String)reader.getString("nomebarco"));
	            }
	            catch (Exception e) {}
	           
	           
	            barcos.add(novo);
	        }

	        return barcos;

	    }

	    /***************************************************************/
	    
}




















